package com.karrim.client.mvp.injector;

import com.google.gwt.inject.client.AsyncProvider;
import com.google.gwt.inject.client.GinModules;
import com.google.gwt.inject.client.Ginjector;
import com.google.inject.Provider;
import com.google.web.bindery.event.shared.EventBus;
import com.gwtplatform.mvp.client.proxy.PlaceManager;
import com.karrim.client.mvp.module.MainModule;
import com.karrim.client.mvp.presenter.FilePresenter;
import com.karrim.client.mvp.presenter.MainPresenter;

/**
 *
 * @author andrea.cantafio
 */
@GinModules({MainModule.class})
public interface MainGinjector extends Ginjector {

    PlaceManager getPlaceManager();

    EventBus getEventBus();

    Provider<MainPresenter> getMainPresenter(); // Use AsyncProvider to enable code splitting
    
    AsyncProvider<FilePresenter> getFilePresenter ();
}
